package com.ethink.framework.common.converter;

import org.apache.commons.collections4.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 转换器
 *
 * @author yunduo
 * @Date 2020-06-01
 **/

public interface Converter<INFO, Entity> {

    /**
     * info 转换为 entity
     *
     * @param info
     * @return
     */
    Entity convertTo(INFO info);

    /**
     * entity 转换为info
     *
     * @param entity
     * @return
     */
    INFO convertFrom(Entity entity);

    /**
     * info集合 转换为 entity集合
     *
     * @param infoList
     * @return
     */
    default List<Entity> convertTo(List<INFO> infoList) {
        List<Entity> entityList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(infoList)) {
            infoList.forEach(info -> entityList.add(convertTo(info)));
        }
        return entityList;
    }

    /**
     * entity集合 转换为info集合
     *
     * @param entityList
     * @return
     */
    default List<INFO> convertFrom(List<Entity> entityList) {
        List<INFO> infoList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(entityList)) {
            entityList.forEach(entity -> infoList.add(convertFrom(entity)));
        }
        return infoList;
    }
}
